package com.it.data_stack;

/**
 * @author: Coke
 * @DateTime: 2023/06/11/20:27
 * 栈
 **/
public interface Stack<E> {
    /**
     * 向栈顶压入元素
     *
     * @param val: 待压入的元素
     * @return boolean 压入成功返回true 否则返回false
     * @DateTime: 2023/6/11 20:29
     * @author: Coke
     */
    boolean push (E val);
    
    /**
     * 从栈顶弹出元素
     *
     * @return E 栈非空 弹出栈顶元素 否则返回null
     * @DateTime: 2023/6/11 20:30
     * @author: Coke
     */
    E pop ();
    
    /**
     * 返回栈顶元素，不弹出
     *
     * @return E非空 返回栈顶元素 否则返回null
     * @DateTime: 2023/6/11 20:31
     * @author: Coke
     */
    E peek ();
    
    /**
     * 判断是否为空 空返回ture 否则返回false
     *
     * @return boolean
     * @DateTime: 2023/6/11 20:35
     * @author: Coke
     */
    boolean isEmpty ();
    
    /**
     * 是否已满 满返回true 否则返回false
     *
     * @return boolean
     * @DateTime: 2023/6/11 20:36
     * @author: Coke
     */
    boolean isFull ();
    
}
